# 本章节研究的是疫情折线图

'''
疫情折线图
json:数据格式化功能 将json格式的数据转化为python格式
Line: 折线图对象 专门创建折线图
TileOpts: 图表的标题
LabelOpts: 设置标签的相关属性
'''
import json

from pyecharts.charts import Line
from pyecharts.options import  TitleOpts,LabelOpts,InitOpts,AxisOpts

# 1 打开文本文件
f_jp = open("/02_pyecharts_test/file/日本.txt", "r", encoding="UTF-8")

# 2 读取文件内容到内存中
jp_data = f_jp.read()
print(jp_data)

# 3 去掉不符合JSON规范的开头
jp_data = jp_data.replace("jsonp_1629350871167_29498(", "")

# 4 去掉不符合JSON规范的结尾 从开始到倒数第二位(不包括)
jp_data = jp_data[:-2]
print(jp_data)

print("--------开始解析数据-------------")
# 5 将json转Python字典
jp_dict = json.loads(jp_data)
print(type(jp_dict))

# 6 获取trend的key( 先根据data获取对应的集合，然后再根据trend再获取对应的集合)
jp_trend_data=jp_dict['data'][0]['trend']

# 7 再获取日期数据，用于x轴
jp_updateDate_data=jp_trend_data['updateDate']
jp_x_data=jp_updateDate_data[:]

# 8 获取数据 用于y轴
jp_list_data=jp_dict['data']
jp_y_data=jp_dict['data'][0]['list'][0]["data"]
print(jp_y_data)

print("----------开始构建折线图--------------")

# 生成图表
line=Line(init_opts=InitOpts(width="500px",height="500px"))  # 构建折线图



# 添加x轴数据
line.add_xaxis(jp_x_data)
# 添加y轴数据
line.add_yaxis("日本确诊人数",jp_y_data,label_opts=LabelOpts(is_show=False))

# 设置全局选项
line.set_global_opts(
    # TitleOpts 这个的标签的作用主要是：标题
    # title:折线图的标题，pos_left：标题居中，pos_bottom：标题距离底部
    # pos_bottom选项设置为1%。它表示标题距离图表底部的距离为整个图表高度的1%
    title_opts=TitleOpts(title="2020日本疫情确诊人数",pos_left="center",pos_bottom="1%"),
    yaxis_opts=AxisOpts(name="感染人数"),
    xaxis_opts=AxisOpts(name="时间")
)

# 调用render方法 生成图表
line.render(path="/02_pyecharts_test/html/日本疫情折线图.html")
# 关闭文件流
f_jp.close()